const $ = layui.jquery;
let table = layui.table;
let form = layui.form;
let layer = layui.layer;
$(() => {
    // 获取省份数据
    getAddrProv();
    // 监听省份选择框的变化
    form.on('select(prov)', function(data) {
        // 如果省份选择框有值，则填充城市列表
        if (data.value) {
            // 清空城市选择框
            $(".city").find("option:not(:first)").remove();
            getAddrByParentId(data.value,".city","该省份无城市数据");
        }
    })
    // 监听城市选择框的变化
    form.on('select(city)', function(data) {
        // 如果城市选择框有值，则填充县区列表
        if (data.value) {
            // 清空城市选择框
            $(".dist").find("option:not(:first)").remove();
            getAddrByParentId(data.value,".dist","该城市无区县数据");
        }
    })
    // 监听区县选择框的变化
    form.on('select(dist)', function(data) {
        // 如果城市选择框有值，则填充县区列表
        if (data.value) {
            // 清空城市选择框
            $(".str").find("option:not(:first)").remove();
            getAddrByParentId(data.value,".str","该区县无街道数据");
        }
    })
})

// 点击提交按钮后的异步提交操作
    function doSubmit(cb) {
        let pass = form.validate("#add-form")//参数验证
        if (!pass) {
            return;
        }
        // 验证通过，向后台发请求
        const url = ctx + "/front/api/v1/account";
        let formData = form.val("add-form");//参数为过滤器
        // console.log(formData);
        $.ajax({
            url,
            method: "post",
            data: formData,
            success(resp) {
                if (resp.success) {
                    if (typeof cb === "function") {
                        cb(resp); // 将后端返回的数据传递给回调函数 callback
                    }
                }
            }, error(resp) {
                layer.msg(resp.responseJSON.msg || "新增会员地址异常");
            }
        })
    }
    //获取省份数据
function  getAddrProv(){
    const url=ctx+"/front/api/v1/account/addr";
    $.ajax({
        url,
        method:"get",
        date:{
            parentId:null
        },
        success(resp) {
            // 填充省份
            resp.data.forEach(function(item) {  //item就是项
                var $option = $("<option>", {
                    value: item.id,
                    text: item.name
                });
                $(".prov").append($option);
            });
            // 重新渲染 <select>
            layui.form.render('select');

        }
    })
}
// 通用函数：根据 parentId 获取下级地址并填充到指定的 select 中,以及无下拉框时显示的文本
function getAddrByParentId(parentId, targetClass, placeholderText) {
    const url = ctx + "/front/api/v1/account/addr";
    $.ajax({
        url,
        method: "get",
        data: {
            parentId: parentId
        },
        success(resp) {
            // 清空目标 select 的选项（保留默认提示选项）
            $(targetClass).find("option:not(:first)").remove();

            if (resp.data && resp.data.length > 0) {
                // 填充选项
                resp.data.forEach(function(item) {
                    var $option = $("<option>", {
                        value: item.id,
                        text: item.name
                    });
                    $(targetClass).append($option);
                });
            } else {
                // 如果没有数据，显示提示选项
                $(targetClass).append($("<option>", {
                    disabled: true,
                    text: placeholderText || "该地区下无数据"
                }));
            }
            // 重新渲染 select
            layui.form.render('select');
        },
        error() {
            layer.msg("获取数据失败，请稍后再试");
        }
    });
}
